/**
 * Created with IntelliJ IDEA.
 * Description:
 * User:${USER}
 * Date:${YEAR}-${MONTH}-${DAY}
 * ${TIME}
 */
public class Main {
    public static void main(String[] args) {
        System.out.println("Hello world!");
    }
}
class Solution {
    public String minWindow(String s, String t) {
        char[] ss=s.toCharArray();
        char[] tt=t.toCharArray();
        int minLen=Integer.MAX_VALUE;
        int count=0;//有效字符种类
        int[] hash1=new int[128];//纪录t里面的字母频次

        for(char ch :tt)hash1[ch]++;
        for(int i=0;i<hash1.length;i++){
            if(hash1[i]!=0){
                count++;
            }
        }
        // for(char ch:tt){
        //     if(hash1[ch]++==0)count++;
        // }

        int begin=-1;

        int[] hash2=new int[128];//纪录s里面
        for(int left=0,right=0,ret=0;right<s.length();right++){
            char in=ss[right];
            hash2[in]++;//经窗口
            if(hash2[in]==hash1[in])ret++;
            while(ret==count){
                if(right-left+1<minLen){//更新结果
                    minLen=right-left+1;
                    begin=left;
                }
                char out=ss[left++];//出窗口
                if(hash2[out]==hash1[out])ret--;
                hash2[out]--;

            }
        }
        if(begin==-1)return new String();
        else return s.substring(begin,begin+minLen);
    }
}